<?php  defined('SYSPATH') or die('No direct access allowed.');

	class Model_AnalysisDataExporter extends Model{
		
		public $temp_dir = "temp/";
		public $analysis_temp_dir = "";  
		public $files = array();
		public $patient_name = "";
		
		public function __construct($patient_name, $analysis_date){
			$this->patient_name = $patient_name;
			$this->analysis_temp_dir = $this->temp_dir."analysis-".$analysis_date; 
			if (!mkdir($this->analysis_temp_dir)) Fire::log("No se pudo crear el directorio temporal");
		}

		public function addClinicalInformation($clinical_information){
			$archivoClinico = $this->analysis_temp_dir."/datos_clinicos.txt";
			$clinical_information->export($archivoClinico);
			return array_push($this->files,$archivoClinico);
		}
		
		public function addFinalSegment($final_segment){
			$archivoFinal = $this->analysis_temp_dir."/registroVDAPromedio.txt";
			$final_segment->toFile($archivoFinal); #Generamos el archivo
			return array_push($this->files,$archivoFinal);
		}
		
		public function addRawSignal($raw_signal){
			$archivoCrudo = $this->analysis_temp_dir."/registro_original.txt";
			$raw_signal->toFile($archivoCrudo);
			return array_push($this->files,$archivoCrudo);
		}
		
		public function addResults($analysis_results){
			$archivoParametros = $this->analysis_temp_dir."/parametros.txt";
			$analysis_results->exportResults($archivoParametros);
			return array_push($this->files,$archivoParametros);
		}
		
		public function addSelectedSegments(array $selected_segments){
			if (!(count($selected_segments)> 0)) return;
			
			foreach($selected_segments as $sel_segment){
				$archivoSegmentoSeleccionado = $this->analysis_temp_dir."/segmento_".$sel_segment["number"].".txt";
				$sel_segment["segment"]->toFile($archivoSegmentoSeleccionado);
				array_push($this->files,$archivoSegmentoSeleccionado);
			}
			return;
		}
				
		
		public function export(){
		
			$zipModel = Model::factory("zip"); 
			//if true, good; if false, zip creation failed
			$zip_file_name = $this->temp_dir."datos_".$this->patient_name."_".Helper_Date::currentDate().".zip";
			$result = $zipModel->create_zip($this->files, $zip_file_name);
			
			if ($result) $zipModel->sendToBrowser($zip_file_name);
						
			//Destruyo los archivos utilizados para la creación del zip
			foreach ($this->files as $file){
				@unlink($file);
			}
			rmdir($this->analysis_temp_dir);
		}
	}
	//Para hacer un solo archivo de texto descargable
	//header ("Content-Disposition: attachment; filename=".$archivo); 
	//header ("Content-Type: application/octet-stream"); 
	//header ("Content-Length: ".filesize($archivo)); 
	//readfile($archivo);
?>
